<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>代理函数</title>
</head>
<body>
    
</body>
</html>
<script>
    function factorial(num){
        return num == 1 ? 1 : num * factorial(num - 1);
    }

    // console.log(factorial(5));

    let proxy = new Proxy(factorial,{
        //参数说明 func：当前的函数    obj 上下文对象  args参数
        apply(func,obj,args){
            console.log(func)
            console.log(obj)
            console.log(args)
        }
    });

    //使用代理的时候  第一个参数默认就是当前被代理的对象  不用传递   
    //传递的参数是从二个开始算的   
    proxy.apply(this,[1,2,3]);
</script>